Software applications often operate in dynamic environments, wherein their workload is variable over time, in a way that is not known a priori. Therefore, computing resources required by each software application for its running (for example, processing power, mass memory space) are generally provisioned thereto so as to meet the workload of the software application in standard (i.e., average) operative conditions (with a certain safety margin). However, this results in an over-provisioning of the computing resources for most of the time, during which the computing resources in excess remain unused (with a corresponding waste thereof). In any case, the computing resources may be under-provisioned when high peaks of the workload occur; in this case, the software application may be unable to absorb its extra-demand, with a consequent degradation of performance of the software application, down to its complete out of service, which may be unacceptable in many practical situations. For example, an e-commerce web site may appear very slow or even unreachable, with a corresponding significant loss of business; moreover, the performance degradation or the out of service may cause a breach of a corresponding Service Level Agreement (SLA).
Performance monitors are available for monitoring performance of the software applications (by measuring corresponding metrics over time). In this way, as soon as the measured metrics indicate that any problem may be experienced by the software application, appropriate provisioning actions may be taken to remedy the situation (for allocation or releasing the computing resources assigned to the software application). A typical application is in a cloud computing environment, wherein (shared) computing resources, generally of virtual type, may be provisioned on-demand (with their implementation that is completely concealed). For example, a software application normally runs on a virtual machine. When a peak of its workload occurs, a corresponding overload of the virtual machine is detected (for example, a too high consumption of its processing power); in response thereto, an additional virtual machine is allocated to the software application so as to serve its increased demand responsively; as soon as the workload returns to its normal level, this additional virtual machine (now mostly idle) is released. This provides a certain degree of elasticity, since the software application is now able to adapt to the variation of its workload (by allocating and releasing the required computing resources accordingly).
However, the provisioning actions may only be performed after corresponding conditions in the workload of the software application have been detected; moreover, a certain time is required by these provisioning actions to take effect (for example, for acquiring a new virtual machine and configuring it appropriately). In general, this causes a delay from each workload condition requiring an adaptation of the computing resources assigned to the software application and the corresponding actual allocation/release of these computing resources, during which the software application may not match its demand correctly (i.e., its computing resources are over-provisioned or under-provisioned).
Moreover, with reference to search portals in the Internet, US-A-2015/0227517 discloses a trend response management. One example can detect a trending topic (e.g., event) and identify content associated with the trending topic. The example can take an action relating to the content that decreases a trend-induced processing spike and/or enhances a user search experience associated with the trending topic. For instance, the action can entail pushing the content to selected users, among other things.